Sustainability

Introduction

We all have a role to play in creating a sustainable future for ourselves and for generations to come. One of the most pressing issues we face today is the high level of energy consumption and the resulting impact on the environment. In 2021, the United States alone consumed a staggering 3,930 terawatt hours of energy, with a significant portion of it coming from non-renewable sources like fossil fuels. This has a detrimental effect on the environment, contributing to climate change, air and water pollution, and other environmental issues. Melting glaciers are threatening to flood our valuable land and cities. An estimated 15 million people around the world are at risk of suffering sudden, deadly, and destructive flooding events due to the warming climate. By caring about sustainability and making conscious choices about energy use, we can help to reduce our carbon footprint and create a more sustainable future.

At Amherst College, we have a responsibility to reduce our energy consumption and minimize our environmental impact. By reducing energy consumption, we can save money and preserve resources for future generations. In our analysis, we look at sustainability within a few freshman dorms at Amherst College. We then look at data across the world and compare energy consumption country-to-country. Our goal is to bring attention to just how much energy is consumed and consequently allow readers to analyze their own carbon footprints.

Website publication work flow

  1. Edit Rmd

  2. Knit to HTML to view progress. You may need to click “Open in Browser” for some content to show (sometimes content won’t show until you actually push your changes to GitHub and view the published website).

  3. Commit and push changes when you are ready. The website may take a couple minutes to update automatically after the push, but you may need to clear your browser’s cache or view the page in a private/incognito window to see the changes more quickly.

Content

You can include text, code, and output as usual. Remember to take full advantage of Markdown and follow our Style Guide.

Examples and additional guidance are provided below.

Take note of the the default code chunk options in the setup code chunk. For example, unlike the rest of the Rmd files we worked in this semester, the default code chunk option is echo = FALSE, so you will need to set echo = TRUE for any code chunks you would like to display in the blog. You should be thoughtful and intentional about the code you choose to display.

Visualizations

Visualizations, particularly interactive ones, will be well-received. That said, do not overuse visualizations. You may be better off with one complicated but well-crafted visualization as opposed to many quick-and-dirty plots. Any plots should be well-thought-out, properly labeled, informative, and visually appealing.

If you want to include dynamic visualizations or tables, you should explore your options from packages that are built from htmlwidgets. These htmlwidgets-based packages offer ways to build lighterweight, dynamic visualizations or tables that don’t require an R server to run! A more complete list of packages is available on the linked website, but a short list includes:

  • plotly: Interactive graphics with D3
  • leaflet: Interactive maps with OpenStreetMap
  • dygraphs: Interactive time series visualization
  • visNetwork: Network graph visualization vis.js
  • sparkline: Small inline charts
  • threejs: Interactive 3D graphics

You may embed a published Shiny app in your blog if useful, but be aware that there is a limited window size for embedded objects, which tends to makes the user experience of the app worse relative to a dedicated Shiny app page. Additionally, Shiny apps will go idle after a few minutes and have to be reloaded by the user, which may also affect the user experience.

Any Shiny apps embedded in your blog should be accompanied by the link to the published Shiny app (I did this using a figure caption in the code chunk below, but you don’t have to incorporate the link in this way).

Tables

DT package

The DT package is great for making dynamic tables that can be displayed, searched, and filtered by the user without needing an R server or Shiny app!

Note: you should load any packages you use in the setup code chunk as usual. The library() functions are shown below just for demonstration.

library(DT)
mtcars %>% 
  select(mpg, cyl, hp) %>% 
  datatable(colnames = c("MPG", "Number of cylinders", "Horsepower"),
            filter = 'top',
            options = list(pageLength = 10, autoWidth = TRUE))

kableExtra package

You can also use kableExtra for customizing HTML tables.

library(kableExtra)
summary(cars) %>%
  kbl(col.names = c("Speed", "Distance"),
      row.names = FALSE) %>%
  kable_styling(bootstrap_options = "striped",
                full_width = FALSE) %>%
  row_spec(0, bold = TRUE) %>%
  column_spec(1:2, width = "1.5in") 
Speed Distance
Min. : 4.0 Min. : 2.00
1st Qu.:12.0 1st Qu.: 26.00
Median :15.0 Median : 36.00
Mean :15.4 Mean : 42.98
3rd Qu.:19.0 3rd Qu.: 56.00
Max. :25.0 Max. :120.00

Images

Images and gifs can be displayed using code chunks:

"Safe Space" by artist Kenesha Sneed

“Safe Space” by artist Kenesha Sneed

This is a figure caption

This is a figure caption

You may also use Markdown syntax for displaying images as shown below, but code chunks offer easier customization of the image size and alignment.

This is another figure caption

Either way, the file path can be a local path within your project directory or a URL for an image hosted online. This syntax works for PNG, PDF, JPG, and even GIF formats.

Formatting

Tabbed subsections

Each subsection below the “Tabbed subsections” section heading will appear in a tab. See R Markdown Cookbook Section 7.6: Put content in tabs for additional customization options.

Bulleted list

You can make a bulleted list like this:

  • item 1
  • item 2
  • item 3

Numbered list

You can make a numbered list like this

  1. First thing I want to say
  2. Second thing I want to say
  3. Third thing I want to say

Column formatting

Content Column 1

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse vel ipsum eu sem facilisis porttitor. Integer eu tristique lectus. Vestibulum nisi risus, porta sit amet cursus nec, auctor ac tellus. Integer egestas viverra rhoncus. Fusce id sem non ante vestibulum posuere ac sed lorem. Proin id felis a mi pellentesque viverra in at nulla. Duis augue nulla, aliquet ac ligula a, sagittis varius lorem.

Content Column 2

Aliquam non ante et erat luctus hendrerit eu ac justo. Fusce lacinia pulvinar neque non laoreet. Fusce vitae mauris pharetra, scelerisque purus eget, pharetra nisl. Aenean volutpat elementum tortor vitae rhoncus. Phasellus nec tellus euismod neque congue imperdiet tincidunt in mauris. Morbi eu lorem molestie, hendrerit lorem nec, semper massa. Sed vulputate hendrerit ex, eget cursus purus. Pellentesque consequat erat leo, eleifend porttitor lacus porta at. Vivamus faucibus quam ipsum, id condimentum ligula malesuada ultrices. Nullam luctus leo elit, vitae rutrum nibh venenatis eget. Nam at sodales purus. Proin nulla tellus, lacinia eget pretium sed, vehicula aliquet neque. Morbi vel eros elementum, suscipit elit eu, consequat libero. Nulla nec aliquet neque. Nunc bibendum sapien lectus, sed elementum nisi rutrum non. Ut vulputate at lacus eget maximus.

Customizing your blog design

As a final detail only if you have time, you can explore options for customizing the style of your blog. By default, we are using the readthedown theme from the rmdformats package (see Line 6 of this file if you want to switch out themes).

Theme

You can use the rmdformats package to play around with some pre-built themes. There are, I’m sure, many many many more similar packages with built in themes, or you can look into how to include a CSS code chunk to customize aspects of a theme.

Using the rmdformats package, you can change the theme itself (Line 6):

  • rmdformats::readthedown
  • rmdformats::downcute
    • For downcute only, you can add a new indented line below Line 6 with the code downcute_theme: "chaos" for the downcute chaos theme
  • rmdformats::robobook
  • rmdformats::material

You can explore additional YAML options by looking at the rmdformats package page or running, for example, ?rmdformats::readthedown() to see the help documentation for a particular theme from the package.

Synax highlighting

You can also change the code chunk syntax highlighting option (Line 7, highlight):

  • "default"
  • "tango"
  • "pygments"
  • "kate"
  • "monochrome"
  • "espresso"
  • "zenburn"
  • "haddock"
  • "textmate"
  • NULL for no syntax highlighting (not recommended)

Font size, type, and other customization

Further customization requires adding a CSS style file or code chunk or incorporating other development options. Customization beyond the rmdformats package should be your lowest and final priority for the project. Ensure your content is fully prepared first.

References

You can list R package citations with the code citation("packageName") in the console and then copy (and reformat as needed) the relevant text, e.g.,

## 
## To cite package 'png' in publications use:
## 
##   Urbanek S (2022). _png: Read and write PNG images_. R package version
##   0.1-8, <https://CRAN.R-project.org/package=png>.
## 
## A BibTeX entry for LaTeX users is
## 
##   @Manual{,
##     title = {png: Read and write PNG images},
##     author = {Simon Urbanek},
##     year = {2022},
##     note = {R package version 0.1-8},
##     url = {https://CRAN.R-project.org/package=png},
##   }
## 
## ATTENTION: This citation information has been auto-generated from the
## package DESCRIPTION file and may need manual editing, see
## 'help("citation")'.

The following citations are based on the American Statistical Association citation style (not all of these references are used in this document).:

Baumer, B. S., Kaplan, D. T., and Horton, N. J. (2021), Modern Data Science with R (2nd ed.), Boca Raton, FL: CRC Press.

“U.S. electricity consumption 2021.” Statista, 25 January 2023, https://www.statista.com/statistics/201794/us-electricity-consumption-since-1975/. Accessed 2 May 2023.

Jones, Benji. “Pakistan flooding: How melting glaciers fueled the disaster.” Vox, 30 August 2022, https://www.vox.com/science-and-health/2022/8/30/23327341/pakistan-flooding-monsoon-melting-glaciers-climate-change. Accessed 2 May 2023.

“Home.” Kaggle, https://www.kaggle.com/datasets/truecue/worldsustainabilitydataset?resource=download. Accessed 2 May 2023.

Wickham H, Averick M, Bryan J, Chang W, McGowan LD, François R, Grolemund G, Hayes A, Henry L, Hester J, Kuhn M, Pedersen TL, Miller E, Bache SM, Müller K, Ooms J, Robinson D, Seidel DP, Spinu V, Takahashi K, Vaughan D, Wilke C, Woo K, Yutani H (2019). “Welcome to the tidyverse.” Journal of Open Source Software, 4(43), 1686. doi:10.21105/joss.01686 https://doi.org/10.21105/joss.01686.

Robinson D, Hayes A, Couch S (2023). broom: Convert Statistical Objects into Tidy Tibbles. R package version 1.0.3, https://CRAN.R-project.org/package=broom.

Slowikowski K (2023). ggrepel: Automatically Position Non-Overlapping Text Labels with ‘ggplot2’. R package version 0.9.3, https://CRAN.R-project.org/package=ggrepel.

Schloerke B, Cook D, Larmarange J, Briatte F, Marbach M, Thoen E, Elberg A, Crowley J (2021). GGally: Extension to ‘ggplot2’. R package version 2.1.2, https://CRAN.R-project.org/package=GGally.

Wickham H, Hester J, Bryan J (2022). readr: Read Rectangular Text Data. R package version 2.1.3, https://CRAN.R-project.org/package=readr.

Becker OScbRA, Minka ARWRvbRBEbTP, Deckmyn. A (2022). maps: Draw Geographical Maps. R package version 3.4.1, https://CRAN.R-project.org/package=maps.

Cheng J, Karambelkar B, Xie Y (2023). leaflet: Create Interactive Web Maps with the JavaScript ‘Leaflet’ Library. R package version 2.1.2, https://CRAN.R-project.org/package=leaflet.

Pebesma, E., 2018. Simple Features for R: Standardized Support for Spatial Vector Data. The R Journal 10 (1), 439-446, https://doi.org/10.32614/RJ-2018-009

Bryan J (2023). gapminder: Data from Gapminder. R package version 1.0.0, https://CRAN.R-project.org/package=gapminder.

H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016.

Benjamin S. Baumer, Daniel T. Kaplan, Nicholas J. Horton (2021). Modern Data Science with R. 2nd edition, Chapman and Hall/CRC Press: Boca Raton, 1–673. URL https://www.routledge.com/Modern-Data-Science-with-R/Baumer-Kaplan-Horton/p/book/9780367191498.

Wickham H, François R, Henry L, Müller K, Vaughan D (2023). dplyr: A Grammar of Data Manipulation. R package version 1.1.0, https://CRAN.R-project.org/package=dplyr.

Pedersen T, Robinson D (2022). gganimate: A Grammar of Animated Graphics. R package version 1.0.8, https://CRAN.R-project.org/package=gganimate.

Pedersen T (2022). transformr: Polygon and Path Transformations. R package version 0.1.4, https://CRAN.R-project.org/package=transformr.

Ooms J (2022). gifski: Highest Quality GIF Encoder. R package version 1.6.6-1, https://CRAN.R-project.org/package=gifski.

Urbanek S (2022). png: Read and write PNG images. R package version 0.1-8, https://CRAN.R-project.org/package=png.